package com.itheima.threadpool;

/*掌握线程池的创建方式。
       使用线程池ExecutorService接口实现类，创建线程池
       ThreadPoolExecutor类

 */

import java.util.concurrent.*;

public class Test {
    public static void main(String[] args) {
        /*
       一：  5：核心线程数（餐馆正式工数量）
       二： 10：最大线程数（餐馆员工最大数量）
       三: 1000：//临时线程最大空闲时间（餐馆临时工最长没活时间）
       四： TimeUnit.MILLISECONDS：临时线程最大空闲时间的单位（餐馆临时工最长没活时间单位）
       五：new ArrayBlockingQueue<Runnable>(5));：任务队列：没有来得及处理的任务进队等待处理（餐馆外的候客区，等待位置）
       六：Executors.defaultThreadFactoru();：线程工厂，创建线程（餐馆的HR，负责管理员工）
       七：new ThreadPoolExecutor.AbortPolicy();：拒绝策略（当任务队列已满，且线程数已满时，拒绝策略，拒绝任务）
         */
        //注意事项一：什么时候创建临时线程？
        //核心线程都在忙，任务队列已满，再来任务，则创建临时线程处理
        //注意事项二：什么时候拒绝
        //核心线程都在忙，临时线程也都在忙，任务队列已满，来任务，则拒绝
        ExecutorService es = new ThreadPoolExecutor(
                5,
                10,
                1000,
                TimeUnit.MILLISECONDS,
                new ArrayBlockingQueue<Runnable>
                        (5));
        Executors.defaultThreadFactory();
        new ThreadPoolExecutor.AbortPolicy();

    }
}
